package models;

import java.util.Date;
import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

import play.db.ebean.Model;

@Entity
@Table(name = "planos_negocios_fases")
public class Fases extends Model{
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	@Id
	@GeneratedValue(strategy = GenerationType.SEQUENCE)
	@Column(name = "plnf_id")
	private Integer id;
	
	@Temporal(TemporalType.DATE)
	@Column(name = "plnf_dt_inicio", nullable = false)
	private Date dtInicio;
	
	@Temporal(TemporalType.DATE)
	@Column(name = "plnf_dt_fim", nullable = false)
	private Date dtFim;
	
	@ManyToOne
	@JoinColumn(name = "pltf_id_planos_negocios_tipos_fases")
	private TipoFases fases;
	
	@ManyToOne(fetch = FetchType.EAGER)
	@JoinColumn(name = "plnf_plne_id")
	private PlanoNegocio plNegocio;
	
	@OneToMany(mappedBy = "fases")
	private List<Atividade> atividades;

	public Fases() {
		super();
	}

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public Date getDtInicio() {
		return dtInicio;
	}

	public void setDtInicio(Date dtInicio) {
		this.dtInicio = dtInicio;
	}

	public Date getDtFim() {
		return dtFim;
	}

	public void setDtFim(Date dtFim) {
		this.dtFim = dtFim;
	}

	public TipoFases getFases() {
		return fases;
	}

	public void setFases(TipoFases fases) {
		this.fases = fases;
	}

	public PlanoNegocio getPlNegocio() {
		return plNegocio;
	}

	public void setPlNegocio(PlanoNegocio plNegocio) {
		this.plNegocio = plNegocio;
	}
	
	public List<Atividade> getAtividades() {
		return atividades;
	}

	public void setAtividades(List<Atividade> atividades) {
		this.atividades = atividades;
	}


	public static Model.Finder<Integer, Fases> find = new Finder<Integer, Fases>(Integer.class, Fases.class);

}
